//*****************************************************************************
// JFab (http://code.google.com/p/jfab)
// Copyright (c) 2011 JFab.org
// Admin jfab@jeffreythompson.net
//
// See the file "LICENSE.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//*****************************************************************************

package org.jfab.core.analyzer;

/**
 * Defines methods required by an analyzer injector.
 */
public interface AnalyzerInjector
{
    /**
     * @return a new class analyzer.
     */
    ClassAnalyzer injectClassAnalyzer();

    /**
     * @return a new constructor analyzer.
     */
    ConstructorAnalyzer injectConstructorAnalyzer();

    /**
     * @return a new enum analyzer.
     */
    EnumAnalyzer injectEnumAnalyzer();

    /**
     * @return a new field analyzer.
     */
    FieldAnalyzer injectFieldAnalyzer();

    /**
     * @return a new interface analyzer.
     */
    InterfaceAnalyzer injectInterfaceAnalyzer();

    /**
     * @return a new interface method analyzer.
     */
    InterfaceMethodAnalyzer injectInterfaceMethodAnalyzer();

    /**
     * @return a new method analysis utilities.
     */
    MethodAnalysisUtilities injectMethodAnalysisUtilities();

    /**
     * @return a new method analyzer.
     */
    MethodAnalyzer injectMethodAnalyzer();
}
